package days2.overload;

/**
 * @Author fengzihao
 * @Date 2024-04-16 21:57
 */
public class Practice {
    // 方法的重载。 方法的名字相同，但是参数不同。 这个就是方法重载。
    // 一个类中的多个方法，可以具有相同的方法名，但是它们的形参列表必须不同。
    // test1()' is already defined in 'com.cskaoyan._02method._03overload.Demo2'
    // 0个形参

 //    除开上述条件外，其余的任何不同都无法构成方法重载， 经典的错误有：
 //    1. 形参的名字不同，可以构成方法重载✖
 //    2. 返回值类型不同，可以构成方法重载✖
 //    3. 修饰符列表不同，可以构成方法重载✖
 //    重载，和形参的名字没有关系。只和形参的类型有关。
 //    构成方法重载，只有方法名相同，形参列表不同。


 //     如果我想在很多方法中，唯一地找到一个方法，需要明确什么？
 //         方法名
 //         类型。
 //     方法名相同，可能有多个方法。
    // 方法1
    // public static void test(int a) {
    // }

    // 方法2
    // public static void test(double a) {
    // }

    // 方法3
    public static void test(float a) {
    }


    public static void main(String[] args) {
        // 就近原则。
        test(10);
        // 在方法的重载中，如果有匹配上的。 这时候就直接匹配上
        // 如果匹配不上，会尝试转换后再匹配。 转换的时候，就金元素。
    }
    public static void test1() {

    }

    public static void test1(int num1) {
    }

    // test2方法，。 形参的数目相同，形参的类型必须不同
    public static void test2(int num1, int num2) {

    }

    public static void test2(double d1, double d2) {

    }

    // 3.形参数量和数据类型都相同时，形参的数据类型的顺序不同
    public static void test3(int num1, double d1) {
    }

    // 'test3(double, int)' is already defined in 'com.cskaoyan._02method._03overload.Demo2'
    public static void test3(double d1, int num1) {
    }

    // public static void test3(double d1, int num1) {
    // }


}
